Solved SOCKET PROGRAMMING C++ SERVER JAVA CLIENT PYTHON |
您所在的位置:网站首页 › python bind socket › Solved SOCKET PROGRAMMING C++ SERVER JAVA CLIENT PYTHON |
SOCKET PROGRAMMING C++ SERVER JAVA CLIENT PYTHON CLIENT PROBLEM IS FIX THE JAVA PROGRAM RETURN WRONG VALUE USE UBUNTU FOR RUNNING SERVER C++ #include #include #include #include #include #include #include #include #define PORT 8080 void* handle_client(void* arg) { int client_socket = *(int*) arg; char buffer[1024] = {0}; int valread = read(client_socket, buffer, 1024); int num1, num2, sum; memcpy(&num1, buffer, sizeof(num1)); memcpy(&num2, buffer + sizeof(num1), sizeof(num2)); sum = num1 + num2; send(client_socket, &sum, sizeof(sum), 0); printf("Sum sent: %d\n", sum); close(client_socket); return NULL; } int main(int argc, char const* argv[]) { int server_fd, new_socket, valread; struct sockaddr_in address; int opt = 1; int addrlen = sizeof(address); if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) { perror("socket failed"); exit(EXIT_FAILURE); } if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) { perror("setsockopt"); exit(EXIT_FAILURE); } address.sin_family = AF_INET; address.sin_addr.s_addr = INADDR_ANY; address.sin_port = htons(PORT); if (bind(server_fd, (struct sockaddr*)&address, sizeof(address)) < 0) { perror("bind failed"); exit(EXIT_FAILURE); } if (listen(server_fd, 3) < 0) { perror("listen"); exit(EXIT_FAILURE); } printf("Server listening on port %d\n", PORT); while (1) { if ((new_socket = accept(server_fd, (struct sockaddr*)&address, (socklen_t*)&addrlen)) < 0) { perror("accept"); exit(EXIT_FAILURE); } pthread_t thread; int* client_socket_ptr = new int(new_socket); if (pthread_create(&thread, NULL, handle_client, (void*) client_socket_ptr) != 0) { perror("pthread_create"); exit(EXIT_FAILURE); } } shutdown(server_fd, SHUT_RDWR); return 0; }
JAVA CLIENT import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.Socket; import java.nio.ByteBuffer; import java.nio.ByteOrder;
public class JAVACLIENT { public static void main(String[] args) throws IOException { try (Socket clientSocket = new Socket("localhost", 8080); DataOutputStream out = new DataOutputStream(clientSocket.getOutputStream()); DataInputStream in = new DataInputStream(clientSocket.getInputStream())) {
int num1 =1202; byte[] num1Arr = ByteBuffer.allocate(4).order(ByteOrder.BIG_ENDIAN).putInt(num1).array(); out.write(num1Arr); System.out.println("Number 1: " + num1);
int num2 = 1798; byte[] num2Arr = ByteBuffer.allocate(4).order(ByteOrder.BIG_ENDIAN).putInt(num2).array(); out.write(num2Arr); System.out.println("Number 2: " + num2);
byte[] sumArr = new byte[4]; in.readFully(sumArr); int sum = ByteBuffer.wrap(sumArr).order(ByteOrder.BIG_ENDIAN).getInt(); System.out.println("Sum sent by Java Client: " + sum);
} catch (IOException e) { System.err.println("Couldn't get I/O for the connection to localhost"); System.exit(1); } } }
PYTHON CLIENT import socket import struct
server_address = ('localhost', 8080) client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client_socket.connect(server_address)
Number1_bytes = 1202 Number1_bytes_bytes = struct.pack('i', Number1_bytes) client_socket.sendall(Number1_bytes_bytes) print("Number 1:", Number1_bytes)
Number2 = 1798 Number2_bytes = struct.pack('i', Number2) client_socket.sendall(Number2_bytes) print("Number 2:", Number2)
sum_bytes = client_socket.recv(4) sum = struct.unpack('i', sum_bytes)[0] print("Sum sent by Python:", sum)
client_socket.close()
|
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |